Initialization: Function: Environment Ensure the map view has data layers Retrieve the view, the projection, the data layer, and the attribute table Ensure only a single theme is active Ensure the active data layer is a polyline data layer (not point or polygon) Ensure the active data layer is editable Function: Map Units Exit if there are no Map Units Retrieve Map Units If Distance Units are set, then convert to Map Units Main Algorithm Function: Update Working Data Layer Retrieve the number of shapes or features (i.e., polylines) in the data layer, n Features Check for the existence of the fields CrowFlies, CalfPath, and Sinuosity in the attribute table; If they don’t exist, create them. Function: Compute Sinuosity Loop through the attribute table and, for each polyline shape, do the following: Calculate the projected curvilinear length, CalfPath [Example Avenue syntax: CalfPath = theShape.ReturnLength)] Set the CalfPath field value in the attribute table Add CalfPath for the current shape to running total: Sum_CalfPath = Sum_CalfPath + CalfPath Retrieve coordinates of endpoints Create point objects for endpoints (Point1 and Point2) Calculate the straight-line distance between the endpoints [Example Avenue syntax: CrowFlies = Point1. Distance(Point2)] Set the CrowFlies field value in the attribute table Calculate Sinuosity = CalfPath/CrowFlies Set the Sinuosity field value in the attribute table Add Sinuosity for current shape to running total: Sum_Sinuosity = Sum_Sinuosity + Sinuosity Function: Finalization and Display Calculate the average CalfPath: Avg_CalfPath = Sum_CalfPath/nFeatures Calculate the average Sinuosity: Avg_Sinuosity = Sum_Sinuosity/nFeatures Display the following: Total Feature Length (Sum_CalfPath) Average Feature Length (Avg_CalfPath) Average Sinuosity (Avg_Sinousity) |